home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 API Bible / Windows 95 API Bible 3 Disc Set.iso / Win32 API Bible Book 1 of 3.iso / chapte22 / ex4.c < prev    next >
C/C++ Source or Header  |  1995-05-29  |  3KB  |  68 lines

  1. #include <genstub.c>
  2.  
  3. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  4. {
  5.    static BOOL bAnsi = TRUE;
  6.    switch (uMsg)
  7.    {
  8.          case WM_COMMAND:
  9.                switch ( LOWORD( wParam ) )
  10.                {
  11.                      case IDM_TEST:
  12.                      {
  13.                            int   i, j;
  14.                            HFONT hOldFont;
  15.                            TCHAR szTemp[64];
  16.                            TCHAR szBuffer[64];
  17.                            HDC   hDC = GetDC( hWnd );
  18.  
  19.                            bAnsi = !bAnsi;
  20.                            if (bAnsi)
  21.                               hOldFont = SelectObject( hDC, GetStockObject(
  22.                                                        ANSI_FIXED_FONT ) );
  23.                            else
  24.                               hOldFont = SelectObject( hDC, GetStockObject(
  25.                                                        OEM_FIXED_FONT ) );
  26.  
  27.                            szTemp[0]=0;
  28.                            for ( j=0; j<16; j++ )
  29.                            {
  30.                               wsprintf( szBuffer, "%X ", j );
  31.                               strcat( szTemp, szBuffer );
  32.                            }
  33.                            TextOut( hDC, 22, 0, szTemp, lstrlen( szTemp ) );
  34.  
  35.                            for ( i=0; i<16; i++ )
  36.                            {
  37.                               wsprintf( szTemp, "%2X ", i*16 );
  38.                               for ( j=0; j<16; j++ )
  39.                               {
  40.                                  wsprintf( szBuffer, "%c ", j+i*16 );
  41.                                  strcat( szTemp, szBuffer );
  42.                               }
  43.                               if (!bAnsi)
  44.                                  CharToOemBuff( szTemp, szTemp, lstrlen( szTemp ) );
  45.                               TextOut( hDC, 0, (i + 1)*15, szTemp, lstrlen(szTemp) );
  46.                            }
  47.  
  48.                            lstrcpy( szBuffer, bAnsi ? "ANSI character set" :
  49.                                     "OEM character set  " );
  50.                            TextOut( hDC, 0, 256, szBuffer, lstrlen(szBuffer) );
  51.  
  52.                            DeleteObject( SelectObject( hDC, hOldFont ) );
  53.                            ReleaseDC( hWnd, hDC );
  54.                      }
  55.                      break;
  56.                      case IDM_EXIT:
  57.                            DestroyWindow( hWnd );
  58.                      break;
  59.                }
  60.                break;
  61.          case WM_DESTROY:
  62.                PostQuitMessage( 0 );
  63.                break;
  64.          default:
  65.                return( DefWindowProc( hWnd, uMsg, wParam, lParam ) );
  66.    }
  67.    return( NULL );
  68. }